// 作用：封装axios

// 导入axios
import axios from "axios";

// 加工axios的环节
// 拦截器：对请求或响应进行拦截处理
// 分类：
//      请求拦截器（上高速的收费站）
axios.interceptors.request.use((cfg) => {
    // 在请求发出去之前拦下，加工一下请求配置信息
    // 场景：接口安全中要求加token到头信息中的时候
    if (localStorage.getItem("token")) {
        // 如果存在token，则给Authorization头信息赋值
        cfg.headers.Authorization = localStorage.getItem("token");
    }
    return cfg;
});

//      响应拦截器（下高速的收费站）
axios.interceptors.response.use((res) => {
    // 在获取到响应的时候拦截，加工下响应的数据
    // 场景：更新jwt的时候使用 && 简化操作
    if (res.data.token) {
        localStorage.setItem("token", res.data.token);
    }
    // 之前获取axios的返回结果都是从res.data中获取的，比较麻烦，我希望res就是返回结果
    return res && res.data;
});

// 导出axios
export default axios;
